There is a need to store information in a form which is both accessible and retrievable. Examples of such information include employment records, monetary transactions, telephone numbers and medical records. Prior to the development of computers, paper based solutions were used for the recording, storage and retrieval of such information. Such solutions however required a large amount of storage space, a careful filing system to ensure each unit of information could be found, and a significant amount of time and human effort to search and retrieve the information. With the development of computing, database systems were devised to facilitate the storage and retrieval of such information. Popular amongst these are relational database management systems, which store related data in structures that can be visualised as tables. Such a database generally supports a structured query language, which software using the database may use to request the retrieval of information.
Having information available in databases that can be easily and instantly accessed has given rise to a greater amount of analysis being performed on the stored data.
An important aspect of data analysis is that of exploration. Databases are often very large and often analysis is performed in an exploratory fashion, meaning that users don't always know what answers they want, or how to get them. This demonstrates the need for a method of analysis which allows for exploration of the data and evaluation of the analysis results. One such method is incremental, where users obtain feedback after every operation. That feedback can then be evaluated. Users can decide to proceed with the analysis (and apply further operations), or to take the analysis in a completely different direction.
Such analysis is widely used. Currently, pivot tables and cross-tab reports are the most common way to generate tabular reports summarising large amounts of data incrementally. Approaches generally follow the steps below:                Interrogating a dataset to establish a list of data fields.        Building a new report by specifying which fields users wish to appear as row labels, and which fields they wish to appear as column labels. Multiple fields can be used for each type of label, creating a hierarchy of row and column labels.        Additionally, users add data field(s) to the report to establish the data that they wish to display. The value to be displayed in each cell of the report table is calculated by applying an implicit function to summarise the data field(s).        The cells that are summarised to produce a value in the output report cell are those which correspond to the output report cell's particular combination of row and column labels. Further data fields can be added to the report, resulting in multiple rows per output report cell, one per added field.        Users can adjust their tabular report by changing the set of fields currently involved in the generation of the report. Re-ordering the row and column labels changes the report.        Users can add/remove/re-order data fields and change the aggregate function used to calculate the output value.        
Whilst the above approach does provide feedback and allows users to summarise groups of data, users often need some sort of indication about the data contained in the fields. This helps them decide how to analyse that data in a more effective way. For the same reason, output reports generated by prior art approaches fail to provide a good contextual grasp of the data to people who are not already familiar with that data and its semantic meaning.